#include "UserManager.h"
#include "CSession.h"

UserManager::~UserManager()
{
	std::lock_guard<std::mutex> lock(m_session_mtx);
	m_uid_to_session.clear();
}

std::shared_ptr<CSession> UserManager::getSession(int uid)
{
	std::lock_guard<std::mutex> lock(m_session_mtx);
	auto iter = m_uid_to_session.find(uid);
	if (iter == m_uid_to_session.end()) {
		return nullptr;
	}
	
	return iter->second;
}

void UserManager::setUserSession(int uid, std::shared_ptr<CSession> session)
{
	std::lock_guard<std::mutex> lock(m_session_mtx);
	m_uid_to_session[uid] = session;
}

void UserManager::removeUserSession(int uid)
{
	auto uid_str = std::to_string(uid);
	// 可能存在该用户再次登录后被分配到其它服务器，所以存在在本服务器中删除key，在其它服务器注册key的情况
	{
		std::lock_guard<std::mutex> lock(m_session_mtx);
		m_uid_to_session.erase(uid);
	}
}


